library(rgdal)
library(ggplot2)
library(geojsonio)
library(dplyr)
library(broom)
library("arules")
library("arulesViz")
library(mapproj)
library("ggrepel")
afghanistan.json <- geojson_read("jsons/district398.json", what="sp")
k_event_df <- read.csv("data/k_event.csv", header = TRUE)
k_event_df
plot(afghanistan.json)

afghanistan.json@data
afghanistan_fortified <- fortify(afghanistan.json, region = "DISTID")
Too few points in geometry component at or near point 60.928091700000003 33.497045180000001SpP is invalid
Invalid objects found; consider using set_RGEOS_CheckValidity(2L)
map <- ggplot(data = afghanistan_fortified, aes(x = long, y = lat, group = group))
map + geom_path()

map +
geom_polygon(aes(fill = id)) +
coord_fixed(1.3) +
guides(fill = FALSE)

afghanistan_fortified %>% distinct(id) %>% write.csv("data/districts.csv", row.names= FALSE)
cities <- data.frame("name" = c("Kabul", "Kandahar", "Herat", "Mazar-i-Sharif"), "long" = c(69.160652, 65.7372, 62.2040, 67.1180), "lat" = c(34.543896, 31.6289, 34.3529, 36.6926))
add_k_to_map <- function(k_days) {
k_days_df <- k_event_df[which(k_event_df$visit_day - k_event_df$impact_day == k_days),]
print(length(k_days_df))
map_districts <- read.csv("data/districts.csv")
map_districts$visits = 0
for (i in 1:nrow(k_days_df)) {
map_districts$visits[map_districts$id == k_days_df[i, 'destination_district']] <- k_days_df[i, 'visits']
}
# plot the shaded map_districts
afghanistan_fortified_days <- merge(afghanistan_fortified, map_districts, by="id")
map <- ggplot(data = afghanistan_fortified_days, aes(x = long, y = lat, group = group))
# create the legend, title, and caption for the map
subt <- paste("Number of impacted people who were in another district", k_days, "day(s) after the day of violence.")
map <- map + geom_polygon(aes(fill=visits), color='grey', size=.1) + scale_fill_gradient(high = "#e34a33", low = "#ffffff", limits=c(0, 3698), guide = "colorbar") + coord_fixed(1.3)
map <- map + labs(title = "Displacement following the Battle of Kunduz", subtitle=subt) + theme(plot.title = element_text(size=20, face="bold"))
# make the Kunduz district (id: 1401) a separate color from the rest
map <- map + geom_polygon(data = afghanistan_fortified_days[which(afghanistan_fortified_days$id == 1401),], aes(fill=visits), color='black', size=.1, fill = "blue")
# add the cities: Kabul, Kandahar, Herat, Mazar-i-Sharif
map <- map + geom_point(data=cities, aes(x = long, y = lat, group = name),col="black", size=1) + geom_text_repel(data=cities, segment.size =.2, aes(x = long, y = lat, label= name, group=name), fontface= "bold", size=4, color = "black", nudge_x = c(3, 2, -2, 1), nudge_y = c(0.25, -1, 0.5, .8))
map
}
add_k_to_map(1)
[1] 6

add_k_to_map(5)
[1] 6

add_k_to_map(10)
[1] 6

add_k_to_map(15)
[1] 6

add_k_to_map(30)
[1] 6

add_k_to_map(45)
[1] 6

add_k_to_map(60)
[1] 6

add_k_to_map(75)
[1] 6

add_k_to_map(90)
[1] 6

add_k_to_map(105)
[1] 6

add_k_to_map(120)
[1] 6

IGNORE EVERYTHING BELOW THIS LINE OF CODE!!!!
map <- ggplot(data = afghanistan_fortified, aes(x = long, y = lat, group = group))
map + geom_polygon(aes(fill=visits), color='black', size=.1) + scale_fill_gradient(high = "#e34a33", low = "#ffffff", limits=c(0, 3386), guide = "colorbar") + coord_fixed(1.3)
k_days_df <- k_event_df[which(k_event_df$visit_day - k_event_df$impact_day == 15),]
for (i in 1:nrow(k_days_df)) {
#print(k15_df[i, 'visits'])
afghanistan.json@data$visits[afghanistan.json@data$DISTID == k_days_df[i, 'destination_district']] <- k_days_df[i, 'visits']
}
afghanistan.json@data
#plot(afghanistan, col=colors, bg="#A6CAE0", cex.main=3)
afghanistan.json_fortified <- tidy(afghanistan.json, region = "visits")
afghanistan.json_fortified
ggplot() +
geom_polygon(data = afghanistan.json_fortified, aes( x = long, y = lat, group = group), fill="white", color="black") +
theme_void() +
coord_map()
LS0tCnRpdGxlOiAiZ2dwbG90MiBLdW5kdXoxNDAxIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgoKYGBge3IgbGlicmFyeSBpbXBvcnRzfQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ2VvanNvbmlvKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGJyb29tKQpsaWJyYXJ5KCJhcnVsZXMiKQpsaWJyYXJ5KCJhcnVsZXNWaXoiKQpsaWJyYXJ5KG1hcHByb2opCmxpYnJhcnkoImdncmVwZWwiKQpgYGAKCmBgYCB7ciBsb2FkaW5nIGRhdGF9CmFmZ2hhbmlzdGFuLmpzb24gPC0gZ2VvanNvbl9yZWFkKCJqc29ucy9kaXN0cmljdDM5OC5qc29uIiwgd2hhdD0ic3AiKQprX2V2ZW50X2RmIDwtIHJlYWQuY3N2KCJkYXRhL2tfZXZlbnQuY3N2IiwgaGVhZGVyID0gVFJVRSkKICAKa19ldmVudF9kZgpwbG90KGFmZ2hhbmlzdGFuLmpzb24pCmFmZ2hhbmlzdGFuLmpzb25AZGF0YQpgYGAKCgpgYGAge3J9CmFmZ2hhbmlzdGFuX2ZvcnRpZmllZCA8LSBmb3J0aWZ5KGFmZ2hhbmlzdGFuLmpzb24sIHJlZ2lvbiA9ICJESVNUSUQiKQptYXAgPC0gZ2dwbG90KGRhdGEgPSBhZmdoYW5pc3Rhbl9mb3J0aWZpZWQsIGFlcyh4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSBncm91cCkpCm1hcCArIGdlb21fcGF0aCgpCgptYXAgKyAKICBnZW9tX3BvbHlnb24oYWVzKGZpbGwgPSBpZCkpICsKICBjb29yZF9maXhlZCgxLjMpICsKICBndWlkZXMoZmlsbCA9IEZBTFNFKQoKYGBgCgpgYGB7cn0KCmFmZ2hhbmlzdGFuX2ZvcnRpZmllZCAlPiUgZGlzdGluY3QoaWQpICU+JSB3cml0ZS5jc3YoImRhdGEvZGlzdHJpY3RzLmNzdiIsIHJvdy5uYW1lcz0gRkFMU0UpCgpgYGAKCmBgYCB7ciwgIGZpZy53aWR0aCA9IDcsIGZpZy5oZWlnaHQgPSA1fQpjaXRpZXMgPC0gZGF0YS5mcmFtZSgibmFtZSIgPSBjKCJLYWJ1bCIsICJLYW5kYWhhciIsICJIZXJhdCIsICJNYXphci1pLVNoYXJpZiIpLCAibG9uZyIgPSBjKDY5LjE2MDY1MiwgNjUuNzM3MiwgNjIuMjA0MCwgNjcuMTE4MCksICJsYXQiID0gYygzNC41NDM4OTYsIDMxLjYyODksIDM0LjM1MjksIDM2LjY5MjYpKQoKYWRkX2tfdG9fbWFwIDwtIGZ1bmN0aW9uKGtfZGF5cykgewogIGtfZGF5c19kZiA8LSBrX2V2ZW50X2RmW3doaWNoKGtfZXZlbnRfZGYkdmlzaXRfZGF5IC0ga19ldmVudF9kZiRpbXBhY3RfZGF5ID09IGtfZGF5cyksXQogIHByaW50KGxlbmd0aChrX2RheXNfZGYpKQogIG1hcF9kaXN0cmljdHMgPC0gcmVhZC5jc3YoImRhdGEvZGlzdHJpY3RzLmNzdiIpCiAgbWFwX2Rpc3RyaWN0cyR2aXNpdHMgPSAwCiAgZm9yIChpIGluIDE6bnJvdyhrX2RheXNfZGYpKSB7CiAgICBtYXBfZGlzdHJpY3RzJHZpc2l0c1ttYXBfZGlzdHJpY3RzJGlkID09IGtfZGF5c19kZltpLCAnZGVzdGluYXRpb25fZGlzdHJpY3QnXV0gPC0ga19kYXlzX2RmW2ksICd2aXNpdHMnXQogIH0KICAKICAjIHBsb3QgdGhlIHNoYWRlZCBtYXBfZGlzdHJpY3RzCiAgYWZnaGFuaXN0YW5fZm9ydGlmaWVkX2RheXMgPC0gbWVyZ2UoYWZnaGFuaXN0YW5fZm9ydGlmaWVkLCBtYXBfZGlzdHJpY3RzLCBieT0iaWQiKQogIG1hcCA8LSBnZ3Bsb3QoZGF0YSA9IGFmZ2hhbmlzdGFuX2ZvcnRpZmllZF9kYXlzLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIGdyb3VwID0gZ3JvdXApKQogIAogICMgY3JlYXRlIHRoZSBsZWdlbmQsIHRpdGxlLCBhbmQgY2FwdGlvbiBmb3IgdGhlIG1hcAogIHN1YnQgPC0gcGFzdGUoIk51bWJlciBvZiBpbXBhY3RlZCBwZW9wbGUgd2hvIHdlcmUgaW4gYW5vdGhlciBkaXN0cmljdCIsIGtfZGF5cywgImRheShzKSBhZnRlciB0aGUgZGF5IG9mIHZpb2xlbmNlLiIpCiAgbWFwIDwtIG1hcCArIGdlb21fcG9seWdvbihhZXMoZmlsbD12aXNpdHMpLCBjb2xvcj0nZ3JleScsIHNpemU9LjEpICsgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoID0gIiNlMzRhMzMiLCBsb3cgPSAiI2ZmZmZmZiIsIGxpbWl0cz1jKDAsIDM2OTgpLCBndWlkZSA9ICJjb2xvcmJhciIpICArIGNvb3JkX2ZpeGVkKDEuMykKICBtYXAgPC0gbWFwICsgbGFicyh0aXRsZSA9ICJEaXNwbGFjZW1lbnQgZm9sbG93aW5nIHRoZSBCYXR0bGUgb2YgS3VuZHV6Iiwgc3VidGl0bGU9c3VidCkgKyB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MjAsIGZhY2U9ImJvbGQiKSkKICAKICAKICAjIG1ha2UgdGhlIEt1bmR1eiBkaXN0cmljdCAoaWQ6IDE0MDEpIGEgc2VwYXJhdGUgY29sb3IgZnJvbSB0aGUgcmVzdAogIG1hcCA8LSBtYXAgKyBnZW9tX3BvbHlnb24oZGF0YSA9IGFmZ2hhbmlzdGFuX2ZvcnRpZmllZF9kYXlzW3doaWNoKGFmZ2hhbmlzdGFuX2ZvcnRpZmllZF9kYXlzJGlkID09IDE0MDEpLF0sIGFlcyhmaWxsPXZpc2l0cyksIGNvbG9yPSdibGFjaycsIHNpemU9LjEsIGZpbGwgPSAiYmx1ZSIpCiAgCiAgIyBhZGQgdGhlIGNpdGllczogS2FidWwsIEthbmRhaGFyLCBIZXJhdCwgTWF6YXItaS1TaGFyaWYKICBtYXAgPC0gbWFwICsgZ2VvbV9wb2ludChkYXRhPWNpdGllcywgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IG5hbWUpLGNvbD0iYmxhY2siLCBzaXplPTEpICsgZ2VvbV90ZXh0X3JlcGVsKGRhdGE9Y2l0aWVzLCBzZWdtZW50LnNpemUgPS4yLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIGxhYmVsPSBuYW1lLCBncm91cD1uYW1lKSwgZm9udGZhY2U9ICJib2xkIiwgc2l6ZT00LCBjb2xvciA9ICJibGFjayIsIG51ZGdlX3ggPSBjKDMsIDIsIC0yLCAxKSwgbnVkZ2VfeSA9IGMoMC4yNSwgLTEsIDAuNSwgLjgpKQogIAogIG1hcAp9CiAgCmFkZF9rX3RvX21hcCgxKQphZGRfa190b19tYXAoNSkKYWRkX2tfdG9fbWFwKDEwKQphZGRfa190b19tYXAoMTUpCmFkZF9rX3RvX21hcCgzMCkKYWRkX2tfdG9fbWFwKDQ1KQphZGRfa190b19tYXAoNjApCmFkZF9rX3RvX21hcCg3NSkKYWRkX2tfdG9fbWFwKDkwKQphZGRfa190b19tYXAoMTA1KQphZGRfa190b19tYXAoMTIwKQoKCmBgYAoKSUdOT1JFIEVWRVJZVEhJTkcgQkVMT1cgVEhJUyBMSU5FIE9GIENPREUhISEhCgpgYGB7ciwgIGZpZy53aWR0aCA9IDE1fQoKbWFwIDwtIGdncGxvdChkYXRhID0gYWZnaGFuaXN0YW5fZm9ydGlmaWVkLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIGdyb3VwID0gZ3JvdXApKQoKbWFwICsgZ2VvbV9wb2x5Z29uKGFlcyhmaWxsPXZpc2l0cyksIGNvbG9yPSdibGFjaycsIHNpemU9LjEpICsgc2NhbGVfZmlsbF9ncmFkaWVudChoaWdoID0gIiNlMzRhMzMiLCBsb3cgPSAiI2ZmZmZmZiIsIGxpbWl0cz1jKDAsIDMzODYpLCBndWlkZSA9ICJjb2xvcmJhciIpICArIGNvb3JkX2ZpeGVkKDEuMykKCgpgYGAKCgpgYGAge3J9CgprX2RheXNfZGYgPC0ga19ldmVudF9kZlt3aGljaChrX2V2ZW50X2RmJHZpc2l0X2RheSAtIGtfZXZlbnRfZGYkaW1wYWN0X2RheSA9PSAxNSksXQpmb3IgKGkgaW4gMTpucm93KGtfZGF5c19kZikpIHsKICAjcHJpbnQoazE1X2RmW2ksICd2aXNpdHMnXSkKICBhZmdoYW5pc3Rhbi5qc29uQGRhdGEkdmlzaXRzW2FmZ2hhbmlzdGFuLmpzb25AZGF0YSRESVNUSUQgPT0ga19kYXlzX2RmW2ksICdkZXN0aW5hdGlvbl9kaXN0cmljdCddXSA8LSBrX2RheXNfZGZbaSwgJ3Zpc2l0cyddCn0KYWZnaGFuaXN0YW4uanNvbkBkYXRhCiNwbG90KGFmZ2hhbmlzdGFuLCBjb2w9Y29sb3JzLCBiZz0iI0E2Q0FFMCIsIGNleC5tYWluPTMpCmBgYAoKCmBgYCB7cn0KYWZnaGFuaXN0YW4uanNvbl9mb3J0aWZpZWQgPC0gdGlkeShhZmdoYW5pc3Rhbi5qc29uLCByZWdpb24gPSAidmlzaXRzIikKYWZnaGFuaXN0YW4uanNvbl9mb3J0aWZpZWQKYGBgCgpgYGAge3J9CgpnZ3Bsb3QoKSArCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSBhZmdoYW5pc3Rhbi5qc29uX2ZvcnRpZmllZCwgYWVzKCB4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSBncm91cCksIGZpbGw9IndoaXRlIiwgY29sb3I9ImJsYWNrIikgKwogIHRoZW1lX3ZvaWQoKSArCiAgY29vcmRfbWFwKCkKCmBgYAo=